package com.sdp.right.utils;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class DbGeneratorPg {

	/**
	 * 一对一数据模型，生成方法
	 * @param args
	 */
	public static void main(String[] args) {
		AutoGenerator generator = new AutoGenerator();
		GlobalConfig globalConfig = new GlobalConfig();
		globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
		globalConfig.setAuthor("zsp");
		globalConfig.setOpen(false);
		globalConfig.setFileOverride(true);
		globalConfig.setActiveRecord(true);
		generator.setGlobalConfig(globalConfig);
		
		  // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:postgresql://127.0.0.1:5432/postgres");
        dsc.setDriverName("org.postgresql.Driver");
        dsc.setUsername("postgres");
        dsc.setPassword("zsp@840107");
        dsc.setSchemaName("right");
        generator.setDataSource(dsc);
		
        // 包配置
//        PackageConfig pc = new PackageConfig();
//        pc.setParent("com.sdp.right.db.sys_flow_task_his");
//        pc.setEntity("entity");
//        pc.setMapper("mapper");
//        pc.setXml("mapper.xml");
//        pc.setService("service");
//        pc.setServiceImpl("service.impl");
//        pc.setController("controller");
//        generator.setPackageInfo(pc);
        
        /*
        SELECT table_name
        FROM information_schema.tables
        WHERE table_schema = 'right'
        AND table_type = 'BASE TABLE';
        */
        
        PackageConfig pc = new PackageConfig();
        String tableName="sys_config";
        pc.setParent("com.sdp.right.db."+tableName);
        pc.setEntity("entity");
        pc.setMapper("mapper");
        pc.setXml("mapper.xml");
        pc.setService("service");
        pc.setServiceImpl("service.impl");
        pc.setController("controller");
        generator.setPackageInfo(pc);
        
//        TemplateConfig templateConfig = new TemplateConfig();
//        templateConfig.setEntity("/templates/entity.java.vm");
//  
//        templateConfig.setMapper(null)
//                      .setService(null)
//                      .setServiceImpl(null)
//                      .setController(null);
//        generator.setTemplate(templateConfig);
        
        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setEntityLombokModel(true);
        strategy.setRestControllerStyle(true);
        strategy.setSkipView(true);
        strategy.setEntityTableFieldAnnotationEnable(true);
        strategy.setInclude(tableName);
        generator.setStrategy(strategy);

        // 设置使用 Freemarker 模板引擎
//        generator.setTemplateEngine(new FreemarkerTemplateEngine());
        
        generator.execute();
        
		System.out.println(System.getProperty("user.dir"));

	}
}
